package MyAdmin.Controller;

import MyFramePro.Domain.Entity.Menu;
import MyFramePro.Domain.ResponseResult;
import MyFramePro.Domain.Vo.BehindMenuTreeVo;
import MyFramePro.Service.Impl.MenuServiceImpl;
import MyFramePro.Utils.SecurityUtils;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

@RestController
@RequestMapping(value = "/system/menu")
public class SystemMenuController {

    @Resource
    private MenuServiceImpl menuService;

    /**
     * 这里是展示菜单列表的功能
     * @param status    状态
     * @param menuName  菜单名
     */
    @GetMapping(value = "/list")
    public ResponseResult getMenuList(@Param("status")String status,@Param("menuName")String menuName){

        return menuService.getMenuList(status,menuName);
    }


    /**
     * 这里是新增菜单的功能
     */
    @PostMapping
    public ResponseResult addMenu(@RequestBody Menu menu){

        return menuService.addMenu(menu);
    }


    /**
     * 这里是根据 ID 查询对应的菜单数据的功能
     */
    @GetMapping("/{id}")
    public ResponseResult getMenu(@PathVariable("id")Long id){

        return menuService.getMenu(id);
    }

    /**
     * 这里是更新菜单的功能
     */
    @PutMapping
    public ResponseResult updateMenu(@RequestBody Menu menu){

        return menuService.updateMenu(menu);
    }


    /**
     * 这里是删除菜单的功能
     */
    @DeleteMapping("/{menuId}")
    public ResponseResult deleteMenu(@PathVariable("menuId") Long menuId){

        return menuService.deleteMenu(menuId);
    }


    /**
     * 这里是新增角色功能，中的获取菜单树的功能
     */
    @GetMapping(value = "/treeselect")
    public ResponseResult getBehindTrees(){

        List<BehindMenuTreeVo> menuTreeVos= menuService.selectMenuTrees();

        return ResponseResult.okResult(menuTreeVos);
    }

    /**
     *  修改角色之   加载对应角色菜单列表树接口
     */
    @GetMapping(value = "/roleMenuTreeselect/{id}")
    public ResponseResult getRoleMenuTree(@PathVariable("id") Long roleId){

        return menuService.getRoleMenuTree(roleId);
    }

}
